如果有任何問題或建議,歡迎隨時聯繫我:
今天來到了第 23 天!我們承接上一篇將繼續聚焦於 Nullish 合併運算符 (??
),這是一個強大且實用的運算符,可以解決 JavaScript 開發中常見的空值處理問題。你或許已經遇到過這樣的情況:當一個變數是 null
或 undefined
時,你想給它一個默認值,而不是用 ||
來處理所有假值。那麼,今天的主角 ??
就是你最好的朋友!
??
)??
是一個 ES2020 (ES11) 中引入的運算符,用來處理空值,也就是當一個變數的值是 null
或 undefined
時,我們可以提供一個默認值來代替。注意!!! 不同於 ||
,它不會將 0
、false
、''
等其他假值視為空值。
let result = a ?? b;
當 a
是 null
或 undefined
時,result
會是 b
。否則,result
就是 a
。
先來看看幾個簡單的例子,讓你瞬間掌握 ??
的強大功能!
let user;
let defaultUser = "Guest";
console.log(user ?? defaultUser); // 輸出: Guest
user = "Alice";
console.log(user ?? defaultUser); // 輸出: Alice
這個例子展示了如何在變數 user
為 null
或 undefined
時,使用默認值 Guest
。
?.
(可選鏈式操作符)將 ?.
與 ??
的結合使用const obj = {
family: {
name: null
}
};
// 使用 ?. 檢查 family 是否存在,並使用 ?? 提供默認值
const familyName = obj.family?.name ?? "Jacky";
console.log(familyName); // 輸出: "Jacky"
||
)很多人會問:「這不就是 ||
嗎?有什麼區別呢?」這是個很好的問題!
來看個例子:
let count = 0;
console.log(count || 10); // 輸出: 10
console.log(count ?? 10); // 輸出: 0
在這裡,||
將 0
視為「假值」並返回 10
,但 ??
只會在變數是 null
或 undefined
時返回默認值,因此結果是 0
。
這種行為使得 ??
特別適合處理可能會是 0
、false
、''
等有效值的情況,而不會被誤當作「空值」。
在處理表單時,我們經常需要給未填寫的輸入設置默認值。??
可以幫助我們輕鬆處理這些情況:
let userInput = ''; // 用戶沒有輸入值
let defaultInput = 'default text';
console.log(userInput ?? defaultInput); // 輸出: ''
這裡 userInput
雖然是空字串,但我們不會將它當作空值,因此結果是 ''
而不是 default text
。如果你用的是 ||
,結果就會是 default text
了。
當處理配置文件時,我們希望只在配置項沒有設置(即為 null
或 undefined
)時才使用默認值,而不是覆蓋掉合法的值(如 false
或 0
)。這裡也是 ??
的完美用武之地:
let config = {
logging: false,
retryLimit: 0
};
let shouldLog = config.logging ?? true;
let retryCount = config.retryLimit ?? 5;
console.log(shouldLog); // 輸出: false
console.log(retryCount); // 輸出: 0
使用 ??
,我們可以保留 false
和 0
這些合法值,而不是將它們當作「空值」來處理。
何謂自我挑戰,問題不怕困難,重點是要解決出問題的人(誤,嘗試開始! 在這裡你可以看到大家是怎麼回答題目的,甚至會看到暗藏的高手可以將簡單的題目回答的淋漓盡致!
回答我都會放在隔天的 GitHub Day24 JS 上哦!
let userName;
let defaultName = 'Anonymous';
console.log(?); // 輸出: Anonymous
userName = 'John';
console.log(?); // 輸出: John
??
保留 0、false 等合法值let userScore = 0;
let defaultScore = 10;
console.log(?); // 輸出: 0
這個挑戰會幫助你理解 ??
和 ||
的實際區別,讓你在處理不同數值時更加得心應手。
今天我們深入了解了 Nullish 合併運算符 (??
),它幫助我們更加優雅地處理 null
和 undefined
,避免了使用 ||
時誤將合法值(如 0
、false
、''
)覆蓋掉的情況。這個運算符的引入,讓我們在編寫更健壯的 JavaScript 代碼時,擁有了更好的工具。
希望今天的學習能讓你更加靈活應對空值處理問題!歡迎在討論區互動交流,明天我們將繼續探討 BigInt!